package com.xmzs.midjourney.handler;

import cn.hutool.extra.spring.SpringUtil;
import com.xmzs.common.core.utils.MapstructUtils;
import com.xmzs.midjourney.domain.MjServer;
import com.xmzs.midjourney.domain.bo.MjServerBo;
import com.xmzs.midjourney.domain.vo.MjServerVo;
import com.xmzs.midjourney.service.IMjServerService;
import com.xmzs.midjourney.service.impl.MjServerServiceImpl;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Component
public class MjServerHandler {
    /**
     * 作图服务器列表
     */
    private static Map<String, MjServer> mjServerMap = new HashMap<>();

//    MjServerHandler(){
//        initMjServerMap();
//    }
    /**
     * 将作图服务器加入到列表中
     */
    private void initMjServerMap(){

        IMjServerService mjServerService = SpringUtil.getBean(MjServerServiceImpl.class);
        MjServerBo mjServerBo = new MjServerBo();
        mjServerBo.setStatus(1);//启用状态的服务器
        List<MjServerVo> mjServerVoList = mjServerService.queryList(mjServerBo);
        if(mjServerVoList.size() == mjServerMap.size()){
            return;
        }
        for (MjServerVo vo: mjServerVoList) {
            mjServerMap.put(vo.getGuildId(), MapstructUtils.convert(vo, MjServer.class));
        }
    }

    public MjServer getServerByGuildId(String guildId){
        if(mjServerMap.size()==0){
            initMjServerMap();
        }
        return mjServerMap.get(guildId);
    }

    public List<MjServer> getAllMjServer(){
        if(mjServerMap.size()==0){
            initMjServerMap();
        }
        List<MjServer> list = new ArrayList<>();
        for (Map.Entry entry:mjServerMap.entrySet()){
            list.add((MjServer) entry.getValue());
        }
        return list;
    }
}
